// string and symbol object test

#include "../include/string.hpp"
#include "../include/symbol.hpp"
#include "../include/array.hpp"


int main() {
	malt::TypeInit();
	malt::String str;
	str.tp = &malt::StringType;
	str.hash_value = 0;
	str.size = 4;
	str.chars = "mmp";
	malt::Symbol sym;
	sym.tp = &malt::SymbolType;
	sym.hash_value = 0;
	sym.size = 4;
	sym.chars = "mmp";
	malt::Array arr;
	arr.size = 2;
	arr.tp = &malt::ArrayType;
	arr.table = (malt::Object**)new void*[2];
	arr.table[0] = &sym;
	arr.table[1] = &str;
	str.repl_print();
	printf("\n");
	sym.repl_print();
	printf("\n");
	arr.repl_print();
	printf("%i\n", sym.eq((malt::Object*)&sym));
	printf("%lu\n", sym.Hash());
	return 0;
}